package cc.eddic.examinationsystem;


import cc.eddic.examinationsystem.core.EnumCode;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;

@Slf4j
@Getter
@AllArgsConstructor
public enum Role implements EnumCode {
    NONE(0),
    /**
     * 考生
     */
    EXAMINEE(1),
    /**
     * 出题人
     */
    EXAMINER(2),
    /**
     * 评卷人
     */
    GRADER(4),
    /**
     * 题库管理员
     */
    QUESTION_BANK_ADMIN(8),
    /**
     * 项目经理
     */
    PROJECT_MANAGER(16);

    private final int code;

    public static Role from(int code) {
        for (Role role : Role.values()) {
            if (role.getCode() == code) {
                return role;
            }
        }
        log.error("无效的角色代码 {} 。", code);
        return Role.NONE;
    }
}
